package com.rla.domain.bo;

import com.rla.common.core.domain.BaseEntity;
import com.rla.common.utils.validate.AddGroup;
import com.rla.common.utils.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;


/**
 * 微信支付结果业务对象 mall_online_pay_wechat_callback
 *
 * @author rla
 * @date 2025-08-12
 */

@Data
@EqualsAndHashCode(callSuper = true)
public class MallOnlinePayWechatCallbackBo extends BaseEntity {

    /**
     * 主键ID
     */
    private String id;

    /**
     * 本系统订单id
     */
    private String orderId;

    /**
     * 三方交易单号流水号
     */
    private String transactionId;

    /**
     * 订单总金额，单位为分。
     */
    private Long total;

    /**
     * 用户支付金额，单位为分。
     */
    private Long payerTotal;

    /**
     * CNY：人民币，境内商户号仅支持人民币。
     */
    private String currency;

    /**
     * 用户支付币种
     */
    private String payerCurrency;

    /**
     * 商户id
     */
    private String mchid;

    /**
     * 本系统订单号
     */
    private String outTradeNo;

    /**
     * 交易状态，枚举值：
SUCCESS：支付成功
REFUND：转入退款
NOTPAY：未支付
CLOSED：已关闭
REVOKED：已撤销（付款码支付）
USERPAYING：用户支付中（付款码支付）
PAYERROR：支付失败(其他原因，如银行返回失败)
     */
    private String tradeState;

    /**
     * 交易状态描述
     */
    private String tradeStateDesc;

    /**
     * 付款银行
     */
    private String bankType;

    /**
     * 应用id
     */
    private String appid;

    /**
     * 交易类型，枚举值：
JSAPI：公众号支付
NATIVE：扫码支付
APP：APP支付
MICROPAY：付款码支付
MWEB：H5支付
FACEPAY：刷脸支付
     */
    private String tradeType;

    /**
     * 附加数据，在查询API和支付通知中原样返回，可作为自定义参数使用，实际情况下只有支付完成状态才会返回该字段。
     */
    private String attach;

    /**
     * 支付完成时间，遵循rfc3339标准格式
     */
    private String successTime;

    /**
     * 支付者的openid
     */
    private String openid;

    /**
     * 删除标志（0代表存在 2代表删除）
     */
    @NotBlank(message = "删除标志（0代表存在 2代表删除）不能为空", groups = { AddGroup.class })
    private String delFlag;

    /**
     * 支付对账 0未处理 1对账已通过 2对账未通过
     */
    private String payReconciliationStatus;


}
